﻿using FairyGUI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using WgFrame.Net;

public class ChangeEquipPanel : BasePopupPanel
{
    private byte szPos;

    private GList lsEquips;

    public override void Init()
    {
        base.Init();

        frame = view.GetChild("n1").asCom;
        lsEquips = frame.GetChild("n1").asList;
        lsEquips.onClickItem.Add(OnSelectEquipClick);
    }

    public override void Show(params object[] para)
    {
        MsgListenerMgr.AddMsgListener(MsgListenerType.EquipPosChange, OnEquipPosChangeMsg);
        szPos = (byte)para[0];
        List<Equip> changeEquips = (List<Equip>)para[1];
        this.SetInfo(changeEquips);

        base.Show(para);
    }

    public override void Close()
    {
        MsgListenerMgr.RemoveMsgListener(MsgListenerType.EquipPosChange, OnEquipPosChangeMsg);
        base.Close();
    }

    protected override GComponent CreateView()
    {
        return UIPackage.CreateObject("Main", "panel_wear_equip1").asCom;
    }

    private void SetInfo(List<Equip> changeEquips)
    {
        lsEquips.RemoveChildrenToPool();
        for (int i=0; i< changeEquips.Count; i++)
        {
            Equip equip = changeEquips[i];
            if (equip.InitEquip == null)
            {
                continue;
            }

            GButton button = lsEquips.AddItemFromPool().asButton;
            button.data = equip.id;
            GTextField tfName = button.GetChild("n3").asTextField;
            tfName.text = equip.InitEquip.name;
            tfName.color = CommonUtil.GetEquipColor(equip.InitEquip.quality);

            GTextField tfQiangHua = button.GetChild("n4").asTextField;
            tfQiangHua.SetVar("lv", equip.QiangHuaLevel.ToString()).FlushVars();

            GTextField tfJingLian = button.GetChild("n7").asTextField;
            tfJingLian.SetVar("lv", equip.JingLianLevel.ToString()).FlushVars();
        }
    }

    private void OnSelectEquipClick(EventContext context)
    {
        if (lsEquips.selectedIndex < 0 || szPos < 1)
        {
            return;
        }

        GButton button = lsEquips.GetChildAt(lsEquips.selectedIndex).asButton;
        long id = (long)button.data;
        RequestHelper.SendWearEquipRequest(szPos, id);
    }

    private void OnEquipPosChangeMsg(params object[] para)
    {
        Close();
    }
}
